﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using SomaiNordeste.FabricaRacao.DomainModel;
using SomaiNordeste.FabricaRacao.DomainModel.Repository;

namespace SomaiNordeste.FabricaRacao.Presentation
{
    public partial class frmInsumosCadastro : Form
    {
        private InsumoRepository _insumoRepository = new InsumoRepository();
        private Batida _batida = new Batida();
        private List<Batida> _batidas;
        private List<string> inseridos = new List<string>();
        public frmInsumosCadastro()
        {
            InitializeComponent();
        }

        public frmInsumosCadastro(Batida batida)
        {
            _batida = batida;
            InitializeComponent();
        }

        public frmInsumosCadastro(List<Batida> batidas)
        {
            _batidas = batidas;
            InitializeComponent();
        }

        private void BatidasCarrega(List<Batida> _batidas)
        {
            if (_batidas == null)
                return;

            dataGridView1.DataSource= _batidas.AdicionaInsumos();
            dataGridView1.InsumosFormataGridView();
        }

        private void frmInsumosCadastro_Load(object sender, EventArgs e)
        {
            BatidasCarrega(_batidas);
        }

        private void btnIncluir_Click(object sender, EventArgs e)
        {
            try
            {
                ///verifica se existe rações para cadastrar, se existir será pegar a batida_diaria
                if (_batidas != null && _batidas.Count > 0)
                {
                    foreach (var item in _batidas)
                    {
                        CriaInsumos(item);
                    }
                }
                ///caso não exista será uma inserida manual
                else
                {
                    CriaInsumos();
                }

                MessageBox.Show("Insumos salvos com sucesso!", "Atenção");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro: " + ex.Message, "Atenção");
            }
        }

        private void CriaInsumos(Batida _batida)
        {
            
            foreach (Control ct in grpInsumos.Controls)
            {
                double peso = 0;
                if (double.TryParse( ct.Text, out peso) && !ct.Name.StartsWith("label"))
                {
                    Insumo insumo = new Insumo();
                    insumo.Date = BatidaENula(_batida) ? dateTime.Value : _batida.Date;
                    insumo.Produto = ct.Name;
                    insumo.Peso = Convert.ToDouble(ct.Text);
                    insumo.Batida = BatidaENula(_batida) ? 0 : _batida.BatidaN;
                    insumo.Batida_Diaria = BatidaENula(_batida) ? Convert.ToInt32(txtBatida.Text) : _batida.Batida_Diaria;
                    _insumoRepository.Add(insumo);
                    inseridos.Add(ct.Name);
                }
            }
        }

        private void CriaInsumos()
        {
            Batida batida = new Batida();
            batida.Date = dateTime.Value;
            batida.Batida_Diaria = Convert.ToInt16(txtBatida.Text);
            CriaInsumos(batida);
        }

        private bool BatidaENula(Batida _batida)
        {
            return (_batida == null);
        }

        #region Metodos Auxiliares

        private void txtBatida_Enter(object sender, EventArgs e)
        {
            txtBatida.BackColor = Color.Yellow;
        }

        private void txtBatida_Leave(object sender, EventArgs e)
        {
            txtBatida.BackColor = Color.White;
        }

        private void dateTimePicker1_Enter(object sender, EventArgs e)
        {
            dateTime.CalendarForeColor = Color.Yellow;
        }

        private void dateTimePicker1_Leave(object sender, EventArgs e)
        {
            dateTime.CalendarForeColor = Color.White;
        }

        private void BICARBONATO_Enter(object sender, EventArgs e)
        {
            BICARBONATO.BackColor = Color.Yellow;
        }

        private void BICARBONATO_Leave(object sender, EventArgs e)
        {
            BICARBONATO.BackColor = Color.White;
        }

        private void CALCARIO_Enter(object sender, EventArgs e)
        {
            CALCARIO.BackColor = Color.Yellow;
        }

        private void CALCARIO_Leave(object sender, EventArgs e)
        {
            CALCARIO.BackColor = Color.White;
        }

       

        private void CALCARIOFINO_Enter(object sender, EventArgs e)
        {
            CALCARIO_FINO.BackColor = Color.Yellow;
        }

        private void CALCARIOFINO_Leave(object sender, EventArgs e)
        {
            CALCARIO_FINO.BackColor = Color.White;
        }

        private void CLORETO_DE_COLINA_Enter(object sender, EventArgs e)
        {
            CLORETO_DE_COLINA.BackColor = Color.Yellow;
        }

        private void CLORETO_DE_COLINA_Leave(object sender, EventArgs e)
        {
            CLORETO_DE_COLINA.BackColor = Color.White;
        }

        private void DL_METIONINA_Enter(object sender, EventArgs e)
        {
            DL_METIONINA.BackColor = Color.Yellow;
        }

        private void DL_METIONINA_Leave(object sender, EventArgs e)
        {
            DL_METIONINA.BackColor = Color.White;
        }

       

        private void FARCARNE_Enter(object sender, EventArgs e)
        {
            FARCARNE.BackColor = Color.Yellow;
        }

        private void FARCARNE_Leave(object sender, EventArgs e)
        {
            FARCARNE.BackColor = Color.White;
        }

        private void FARSOJA_Enter(object sender, EventArgs e)
        {
            FARSOJA.BackColor = Color.Yellow;
        }

        private void FARSOJA_Leave(object sender, EventArgs e)
        {
            FARSOJA.BackColor = Color.White;
        }

        private void FARTRIGO_Enter(object sender, EventArgs e)
        {
            FARTRIGO.BackColor = Color.Yellow;
        }

        private void FARTRIGO_Leave(object sender, EventArgs e)
        {
            FARTRIGO.BackColor = Color.White;
        }

        private void FUBA_FINO_Enter(object sender, EventArgs e)
        {
            FUBA_FINO.BackColor = Color.Yellow;
        }

        private void FUBA_FINO_Leave(object sender, EventArgs e)
        {
            FUBA_FINO.BackColor = Color.White;
        }

        private void FUBAFINO_Enter(object sender, EventArgs e)
        {
            SORGO.BackColor = Color.Yellow;
        }

        private void FUBAFINO_Leave(object sender, EventArgs e)
        {
            SORGO.BackColor = Color.White;
        }

        

        private void LISINA_Enter(object sender, EventArgs e)
        {
            LISINA.BackColor = Color.Yellow;
        }

        private void LISINA_Leave(object sender, EventArgs e)
        {
            LISINA.BackColor = Color.White;
        }

        private void LUTAMIX_FR_Enter(object sender, EventArgs e)
        {
            LUTAMIX_FR.BackColor = Color.Yellow;
        }

        private void LUTAMIX_FR_Leave(object sender, EventArgs e)
        {
            LUTAMIX_FR.BackColor = Color.White;
        }

        private void LUTAMIX_PC_Enter(object sender, EventArgs e)
        {
            LUTAMIX_PC.BackColor = Color.Yellow;
        }

        private void LUTAMIX_PC_Leave(object sender, EventArgs e)
        {
            LUTAMIX_PC.BackColor = Color.White;
        }

        private void MICOFIX_Enter(object sender, EventArgs e)
        {
            MICOFIX.BackColor = Color.Yellow;
        }

        private void MICOFIX_Leave(object sender, EventArgs e)
        {
            MICOFIX.BackColor = Color.White;
        }

        private void MILHO_Enter(object sender, EventArgs e)
        {
            MILHO.BackColor = Color.Yellow;
        }

        private void MILHO_Leave(object sender, EventArgs e)
        {
            MILHO.BackColor = Color.White;
        }

        private void OLEO_Enter(object sender, EventArgs e)
        {
            OLEO.BackColor = Color.Yellow;
        }

        private void OLEO_Leave(object sender, EventArgs e)
        {
            OLEO.BackColor = Color.White;
        }

        private void PREMIX_Enter(object sender, EventArgs e)
        {
            PREMIX.BackColor = Color.Yellow;
        }

        private void PREMIX_Leave(object sender, EventArgs e)
        {
            PREMIX.BackColor = Color.White;
        }

        private void SAL_Enter(object sender, EventArgs e)
        {
            SAL.BackColor = Color.Yellow;
        }

        private void SAL_Leave(object sender, EventArgs e)
        {
            SAL.BackColor = Color.White;
        }

        private void SOJAEXT_Enter(object sender, EventArgs e)
        {
            SOJAEXT.BackColor = Color.Yellow;
        }

        private void SOJAEXT_Leave(object sender, EventArgs e)
        {
            SOJAEXT.BackColor = Color.White;
        }

        
        #endregion

      

        
        

    }
}
